using System;
using System.Configuration;
using System.Data;
using System.Text;
using System.Web.UI.WebControls;
using Anthem;
using App_Code;
using MinCultura.Sinic.Basicas;
using Common;

using MinCultura.Sipa.EntidadesArtes; 
using MinCultura.Sipa.DataAccess.EntidadesArtes;
using MinCultura.Sipa.DataAccess.AgentesArtes;
using MinCultura.Sipa.AgentesArtes;
using UsrControls;

using CompareValidator = Anthem.CompareValidator;
using CustomValidator = Anthem.CustomValidator;
using Label = Anthem.Label;
using RadioButtonList = Anthem.RadioButtonList;
using RegularExpressionValidator = Anthem.RegularExpressionValidator;
using RequiredFieldValidator = Anthem.RequiredFieldValidator;
using TextBox = Anthem.TextBox;

namespace web.Controls
{
	/// <summary>
	/// Summary description for AgentesBasicos.
	/// </summary>
	public class InfraestructuraTramoya : SinicUserControl
	{
		protected Anthem.RadioButtonList rblSiNoTieneParrilla;
		protected Anthem.RadioButtonList rblSiNoTieneCalles;
		protected Anthem.RadioButtonList rblSiNoTieneCiclorama;
		protected Anthem.CheckBoxList cblTiposTelones;
		protected Anthem.Label lblAlturaParrilla;
		protected UsrControls.TextBoxBase txtAlturaParrilla;
		protected Anthem.Label lblAreaParrilla;
		protected Anthem.Label lblNumCallesManuales;
		protected UsrControls.TextBoxBase txtNumCallesManuales;
		protected Anthem.Label lblNumCallesContrapesadas;
		protected UsrControls.TextBoxBase txtNumCallesContrapesadas;
		protected Anthem.Label lblNumCallesMotorizadas;
		protected UsrControls.TextBoxBase txtNumCallesMotorizadas;
		protected UsrControls.TextBoxBase txtNumBarrasFijas;
		protected Anthem.Label lblNumBambalinas;
		protected UsrControls.TextBoxBase txtNumBambalinas;
		protected Anthem.Label lblNumPatas;
		protected UsrControls.TextBoxBase txtNumPatas;
		protected Anthem.Label lblNumFondos;
		protected UsrControls.TextBoxBase txtNumFondos;
		protected Anthem.Label lblMaterialCiclorama;
		protected UsrControls.TextBoxBase txtMaterialCiclorama;
		protected Anthem.Label lblMedidasCiclorama;
		protected UsrControls.TextBoxBase txtMedidasCiclorama;
		protected Anthem.RadioButtonList rblSiNoTieneCamaraNegra;
		protected Anthem.RadioButtonList rblSiNoTieneTelonBoca;
		protected Anthem.Label lblTipoTelon;
		protected UsrControls.TextBoxBase txtAreaParrilla;

		#region - Eventos

		private void Page_Load(object sender, EventArgs e)
		{
			if (!IsPostBack)
			{
				Manager.Register(this);

				if (this.Identificador == 0)
				{
					CargarControles();
				}

				StringBuilder strTieneParrilla = new StringBuilder();
				strTieneParrilla.Append(rblSiNoTieneParrilla.ClientID + "_0,");
				strTieneParrilla.Append(lblAlturaParrilla.ClientID + ",");
				strTieneParrilla.Append(txtAlturaParrilla.ClientID + ",");
				strTieneParrilla.Append(lblAreaParrilla.ClientID + ",");
				strTieneParrilla.Append(txtAreaParrilla.ClientID);
				rblSiNoTieneParrilla.Attributes["OnClick"] = "return habilitarCamposSINO(" + strTieneParrilla.ToString() + ")";

				StringBuilder strTieneCalles = new StringBuilder();
				strTieneCalles.Append(rblSiNoTieneCalles.ClientID + "_0,");
				strTieneCalles.Append(lblNumCallesManuales.ClientID + ",");
				strTieneCalles.Append(txtNumCallesManuales.ClientID + ",");
				strTieneCalles.Append(lblNumCallesContrapesadas.ClientID + ",");
				strTieneCalles.Append(txtNumCallesContrapesadas.ClientID + ",");
				strTieneCalles.Append(lblNumCallesMotorizadas.ClientID + ",");
				strTieneCalles.Append(txtNumCallesMotorizadas.ClientID);
				rblSiNoTieneCalles.Attributes["OnClick"] = "return habilitarCamposSINO(" + strTieneCalles.ToString() + ")";

				StringBuilder strTieneTelonBoca = new StringBuilder();
				strTieneTelonBoca.Append(rblSiNoTieneTelonBoca.ClientID + "_0,");
				strTieneTelonBoca.Append(lblTipoTelon.ClientID + ",");
				strTieneTelonBoca.Append(cblTiposTelones.ClientID);
				rblSiNoTieneTelonBoca.Attributes["OnClick"] = "return habilitarCamposSINO(" + strTieneTelonBoca.ToString() + ")";				

				StringBuilder strTieneCamaraNegra = new StringBuilder();
				strTieneCamaraNegra.Append(rblSiNoTieneCamaraNegra.ClientID + "_0,");
				strTieneCamaraNegra.Append(lblNumBambalinas.ClientID + ",");
				strTieneCamaraNegra.Append(txtNumBambalinas.ClientID + ",");
				strTieneCamaraNegra.Append(lblNumPatas.ClientID + ",");
				strTieneCamaraNegra.Append(txtNumPatas.ClientID + ",");
				strTieneCamaraNegra.Append(lblNumFondos.ClientID + ",");
				strTieneCamaraNegra.Append(txtNumFondos.ClientID);
				rblSiNoTieneCamaraNegra.Attributes["OnClick"] = "return habilitarCamposSINO(" + strTieneCamaraNegra.ToString() + ")";

				StringBuilder strTieneCiclorama = new StringBuilder();
				strTieneCiclorama.Append(rblSiNoTieneCiclorama.ClientID + "_0,");
				strTieneCiclorama.Append(lblMaterialCiclorama.ClientID + ",");
				strTieneCiclorama.Append(txtMaterialCiclorama.ClientID + ",");
				strTieneCiclorama.Append(lblMedidasCiclorama.ClientID + ",");
				strTieneCiclorama.Append(txtMedidasCiclorama.ClientID);
				rblSiNoTieneCiclorama.Attributes["OnClick"] = "return habilitarCamposSINO(" + strTieneCiclorama.ToString() + ")";
			}
		}

		#endregion 

		#region - Metodos 		

		public DataSet ObtenerDatos()
		{
			DataSet dsTramoya = new DataSet();

			//Tramoya
			InfraestructuraEntidadesTramoyaData dtTramoya =  new InfraestructuraEntidadesTramoyaData();
			DataRow fila = dtTramoya.NewRow();

			fila[InfraestructuraEntidadesTramoyaData.INF_ID_FIELD] = this.Identificador;

			fila[InfraestructuraEntidadesTramoyaData.INF_TIENE_PARRILLA_FIELD] = rblSiNoTieneParrilla.SelectedValue;
			if (rblSiNoTieneParrilla.SelectedValue == Utilidad.SI)
			{
				if (txtAlturaParrilla.Text.Trim().Length > 0)
					fila[InfraestructuraEntidadesTramoyaData.INF_ALTURA_PARRILLA_FIELD] = txtAlturaParrilla.Text;					
				if (txtAreaParrilla.Text.Trim().Length > 0)
					fila[InfraestructuraEntidadesTramoyaData.INF_AREA_PARRILLA_FIELD] = txtAreaParrilla.Text;
			}

			fila[InfraestructuraEntidadesTramoyaData.INF_TIENE_CALLES_FIELD] = rblSiNoTieneCalles.SelectedValue;
			if (rblSiNoTieneCalles.SelectedValue == Utilidad.SI)
			{
				if (txtNumCallesManuales.Text.Trim().Length > 0)
					fila[InfraestructuraEntidadesTramoyaData.INF_NUMERO_CALLES_MANULES_FIELD] = txtNumCallesManuales.Text;
				if (txtNumCallesContrapesadas.Text.Trim().Length > 0)
					fila[InfraestructuraEntidadesTramoyaData.INF_NUMERO_CALLES_CONTRAPESADAS_FIELD] = txtNumCallesContrapesadas.Text;
				if (txtNumCallesMotorizadas.Text.Trim().Length > 0)
					fila[InfraestructuraEntidadesTramoyaData.INF_NUMERO_CALLES_MOTORIZADAS_FIELD] = txtNumCallesMotorizadas.Text;
			}

			if (txtNumBarrasFijas.Text.Trim().Length > 0)
			{
				if (txtNumBarrasFijas.Text.Trim().Length > 0)
					fila[InfraestructuraEntidadesTramoyaData.INF_NUMERO_BARRAS_FIJAS_FIELD] = txtNumBarrasFijas.Text;
			}

			fila[InfraestructuraEntidadesTramoyaData.INF_TIENE_TELON_BOCA_FIELD] = rblSiNoTieneTelonBoca.SelectedValue;

			fila[InfraestructuraEntidadesTramoyaData.INF_TIENE_CAMARA_NEGRA_FIELD] = rblSiNoTieneCamaraNegra.SelectedValue;
			if (rblSiNoTieneCamaraNegra.SelectedValue == Utilidad.SI)
			{
				if (txtNumBambalinas.Text.Trim().Length > 0)
					fila[InfraestructuraEntidadesTramoyaData.INF_NUMERO_BAMBALINAS_FIELD] = txtNumBambalinas.Text;
				if (txtNumPatas.Text.Trim().Length > 0)
					fila[InfraestructuraEntidadesTramoyaData.INF_NUMERO_PATAS_FIELD] = txtNumPatas.Text;
				if (txtNumFondos.Text.Trim().Length > 0)
					fila[InfraestructuraEntidadesTramoyaData.INF_NUMERO_FONDOS_FIELD] = txtNumFondos.Text;					
			}

			fila[InfraestructuraEntidadesTramoyaData.INF_TIENE_CICLORAMA_FIELD] = rblSiNoTieneCiclorama.SelectedValue;
			if (rblSiNoTieneCiclorama.SelectedValue == Utilidad.SI)
			{
				if (txtMaterialCiclorama.Text.Trim().Length > 0)
					fila[InfraestructuraEntidadesTramoyaData.INF_MATERIAL_CICLORAMA_FIELD] = txtMaterialCiclorama.Text;
				if (txtMedidasCiclorama.Text.Trim().Length > 0)
					fila[InfraestructuraEntidadesTramoyaData.INF_MEDIDAS_CICLORAMA_FIELD] = txtMedidasCiclorama.Text;
			}

			dtTramoya.addInfraestructuraEntidadesTramoya(fila);

			dsTramoya.Tables.Add(dtTramoya);

			//Sistema Telon de Boca
			InfraestructuraTelonesData dtTiposTelones = new InfraestructuraTelonesData();			
			foreach (ListItem liTipoTelon in cblTiposTelones.Items)
			{
				if (liTipoTelon.Selected)
				{
					DataRow drTipoTelon = dtTiposTelones.NewRow();
					drTipoTelon[InfraestructuraTelonesData.INF_ID_FIELD] = this.Identificador;
					drTipoTelon[InfraestructuraTelonesData.TTE_ID_FIELD] = liTipoTelon.Value;
					dtTiposTelones.addInfraestructuraTelones(drTipoTelon);
				}
			}
			dsTramoya.Tables.Add(dtTiposTelones);

			return dsTramoya;
		}

		public void CreaEntorno(DataSet dsTramoya)
		{
			if (!IsPostBack)
			{
				CargarControles();

				//Tramoya
				InfraestructuraEntidadesTramoyaData dtTramoya = (InfraestructuraEntidadesTramoyaData)dsTramoya.Tables[InfraestructuraEntidadesTramoyaData.ART_INFRAESTRUCTURA_ENTIDADES_TRAMOYA_TABLE];
				DataRow fila = dtTramoya.Rows[0];

				this.Identificador = Convert.ToDecimal(fila[InfraestructuraEntidadesTramoyaData.INF_ID_FIELD]);
				if (fila[InfraestructuraEntidadesTramoyaData.INF_TIENE_PARRILLA_FIELD] != DBNull.Value && 
					fila[InfraestructuraEntidadesTramoyaData.INF_TIENE_PARRILLA_FIELD].ToString() != string.Empty)
				{
					rblSiNoTieneParrilla.SelectedValue = fila[InfraestructuraEntidadesTramoyaData.INF_TIENE_PARRILLA_FIELD].ToString();
					if (rblSiNoTieneParrilla.SelectedValue == Utilidad.SI)
					{
						txtAlturaParrilla.Text = fila[InfraestructuraEntidadesTramoyaData.INF_ALTURA_PARRILLA_FIELD].ToString();					
						lblAlturaParrilla.Enabled = true;
						txtAlturaParrilla.Enabled = true;
						txtAreaParrilla.Text = fila[InfraestructuraEntidadesTramoyaData.INF_AREA_PARRILLA_FIELD].ToString();
						lblAreaParrilla.Enabled = true;
						txtAreaParrilla.Enabled = true;
					}
				}

				if (fila[InfraestructuraEntidadesTramoyaData.INF_TIENE_CALLES_FIELD] != DBNull.Value && 
					fila[InfraestructuraEntidadesTramoyaData.INF_TIENE_CALLES_FIELD].ToString() != string.Empty)
				{
					rblSiNoTieneCalles.SelectedValue = fila[InfraestructuraEntidadesTramoyaData.INF_TIENE_CALLES_FIELD].ToString();
					if (rblSiNoTieneCalles.SelectedValue == Utilidad.SI)
					{
						txtNumCallesManuales.Text = fila[InfraestructuraEntidadesTramoyaData.INF_NUMERO_CALLES_MANULES_FIELD].ToString();
						txtNumCallesContrapesadas.Text = fila[InfraestructuraEntidadesTramoyaData.INF_NUMERO_CALLES_CONTRAPESADAS_FIELD].ToString();
						txtNumCallesMotorizadas.Text = fila[InfraestructuraEntidadesTramoyaData.INF_NUMERO_CALLES_MOTORIZADAS_FIELD].ToString();
						lblNumCallesManuales.Enabled = true;
						lblNumCallesContrapesadas.Enabled = true;
						lblNumCallesMotorizadas.Enabled = true;
						txtNumCallesManuales.Enabled = true;
						txtNumCallesContrapesadas.Enabled = true;
						txtNumCallesMotorizadas.Enabled = true;
					}
				}

				txtNumBarrasFijas.Text = fila[InfraestructuraEntidadesTramoyaData.INF_NUMERO_BARRAS_FIJAS_FIELD].ToString();

				if (fila[InfraestructuraEntidadesTramoyaData.INF_TIENE_TELON_BOCA_FIELD] != DBNull.Value && 
					fila[InfraestructuraEntidadesTramoyaData.INF_TIENE_TELON_BOCA_FIELD].ToString() != string.Empty)
				{
					rblSiNoTieneTelonBoca.SelectedValue = fila[InfraestructuraEntidadesTramoyaData.INF_TIENE_TELON_BOCA_FIELD].ToString();
					if (rblSiNoTieneTelonBoca.SelectedValue == Utilidad.SI)
					{
						lblTipoTelon.Enabled = true;
						cblTiposTelones.Attributes["disabled"] = null;
					}
				}

				if (fila[InfraestructuraEntidadesTramoyaData.INF_TIENE_CAMARA_NEGRA_FIELD] != DBNull.Value && 
					fila[InfraestructuraEntidadesTramoyaData.INF_TIENE_CAMARA_NEGRA_FIELD].ToString() != string.Empty)
				{
					rblSiNoTieneCamaraNegra.SelectedValue = fila[InfraestructuraEntidadesTramoyaData.INF_TIENE_CAMARA_NEGRA_FIELD].ToString();
					if (rblSiNoTieneCamaraNegra.SelectedValue == Utilidad.SI)
					{
						txtNumBambalinas.Text = fila[InfraestructuraEntidadesTramoyaData.INF_NUMERO_BAMBALINAS_FIELD].ToString();
						txtNumPatas.Text = fila[InfraestructuraEntidadesTramoyaData.INF_NUMERO_PATAS_FIELD].ToString();
						txtNumFondos.Text = fila[InfraestructuraEntidadesTramoyaData.INF_NUMERO_FONDOS_FIELD].ToString();					

						lblNumBambalinas.Enabled = true;
						lblNumPatas.Enabled = true;
						lblNumFondos.Enabled = true;
						txtNumBambalinas.Enabled = true;
						txtNumPatas.Enabled = true;
						txtNumFondos.Enabled = true;
					}
				}

				if (fila[InfraestructuraEntidadesTramoyaData.INF_TIENE_CICLORAMA_FIELD] != DBNull.Value && 
					fila[InfraestructuraEntidadesTramoyaData.INF_TIENE_CICLORAMA_FIELD].ToString() != string.Empty)
				{
					rblSiNoTieneCiclorama.SelectedValue = fila[InfraestructuraEntidadesTramoyaData.INF_TIENE_CICLORAMA_FIELD].ToString();
					if (rblSiNoTieneCiclorama.SelectedValue == Utilidad.SI)
					{
						txtMaterialCiclorama.Text = fila[InfraestructuraEntidadesTramoyaData.INF_MATERIAL_CICLORAMA_FIELD].ToString();
						txtMedidasCiclorama.Text = fila[InfraestructuraEntidadesTramoyaData.INF_MEDIDAS_CICLORAMA_FIELD].ToString();

						lblMaterialCiclorama.Enabled = true;
						lblMedidasCiclorama.Enabled = true;
						txtMaterialCiclorama.Enabled = true;
						txtMedidasCiclorama.Enabled = true;
					}
				}

				//Sistema Telon de Boca
				InfraestructuraTelonesData dtTiposTelones = (InfraestructuraTelonesData)dsTramoya.Tables[InfraestructuraTelonesData.ART_INFRAESTRUCTURA_TELONES_TABLE];			
				foreach (DataRow drTipoTelon in dtTiposTelones.Rows)
				{
					ListItem liTipoTelon = cblTiposTelones.Items.FindByValue(drTipoTelon[InfraestructuraTelonesData.TTE_ID_FIELD].ToString());
					if (liTipoTelon!=null)
					{
						liTipoTelon.Selected = true;
					}
				}
			}
		}

		private void CargarControles()
		{
			cblTiposTelones.Items.Clear();
            TiposTelon objBRTiposTelon = new TiposTelon(ConfigurationManager.AppSettings["Conn"]);
			TiposTelonData objDataTiposTelon = new TiposTelonData();

			objDataTiposTelon = objBRTiposTelon.BuscarTiposTelon();
			if (objDataTiposTelon != null)
			{
				cblTiposTelones.DataSource = objDataTiposTelon.Tables[0].DefaultView;
				cblTiposTelones.DataTextField = TiposTelonData.TTE_NOMBRE_FIELD;
				cblTiposTelones.DataValueField = TiposTelonData.TTE_ID_FIELD;
				cblTiposTelones.DataBind();
			}
			cblTiposTelones.Attributes["disabled"] = "disabled";			
		}
		#endregion 

		#region - Propiedades

		public decimal Identificador
		{
			get
			{
				if (ViewState["Identificador"] != null)
					return ((decimal) ViewState["Identificador"]);
				else
					return (0);
			}
			set { ViewState["Identificador"] = decimal.Parse(value.ToString()); }
		}

		public DataSet TramoyaData
		{
			get
			{
				return ObtenerDatos();
			}
			set
			{
				CreaEntorno(value);
			}
		}

		#endregion 

		#region Web Form Designer generated code

		protected override void OnInit(EventArgs e)
		{
			InitializeComponent();
			base.OnInit(e);
		}

		private void InitializeComponent()
		{
			this.Load += new System.EventHandler(this.Page_Load);

		}

		#endregion

	}
}